Transmission Control Protocol (TCP) is a commonly used protocol, in the Internet Protocol (IP) suite, that provides data transmission services to application programs. For example, when an application program desires to send data, instead of breaking the data into smaller pieces and issuing a series of IP requests, the application program may issue a single request to a TCP component. The TCP component may, in turn, handle IP-related tasks associated with transmitting the data (e.g., breaking the data into smaller pieces and issuing multiple IP requests to transmit the data).
Due to network congestion, traffic load balancing, or other unpredictable network behavior, IP packets can be lost, duplicated, or delivered out of order. TCP components can detect these problems, request retransmission of lost data, and rearrange out-of-order data. Additionally, TCP components may implement congestion control algorithms to help minimize network congestion.
Existing TCP congestion control mechanisms may be designed for wireline transport, in which a varying amount of traffic is inserted into shared transport “pipes” that have a fixed bandwidth. Existing TCP congestion mechanisms may not work, or may not work effectively or optimally, when: (1) other traffic is inserted in the same wireline transport but does not implement some form of congestion control; or (2) the capacity of the transport changes at a faster rate than at which the TCP congestion control mechanism can detect congestion and take corrective action. Situation (2) may commonly occur in certain non-wireline transport segments, such as radio transport segments.